package com.ruoyi.laboratory.domain.excel;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.laboratory.domain.LabResearchProject;
import lombok.*;

import java.util.ArrayList;
import java.util.List;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.annotation.Excel;
import org.apache.commons.collections4.CollectionUtils;
import com.ruoyi.common.core.domain.BaseExcel;

/**
 * 科研项目Excel对象
 *
 * @author liangh
 * @date 2024-11-07
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LabResearchProjectExcel extends BaseExcel {

    private static final long serialVersionUID = 1L;

    /** 主键id */
    private String id;

    /** 所属平台id */
    @Excel(name = "所属平台id")
    private Long platformId;

    /** 来源 */
    @Excel(name = "来源")
    private String source;

    /** 项目id */
    @Excel(name = "项目id")
    private Long projectId;

    /** 项目编码 */
    @Excel(name = "项目编码")
    private String projectCode;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 组织单位 */
    @Excel(name = "组织单位")
    private String organizedBy;

    /** 组织单位ID */
    @Excel(name = "组织单位ID")
    private String organizedById;

    /** 组织方机构类型  1: 集团 2: 专业公司 3: 承担单位 */
    @Excel(name = "组织方机构类型  1: 集团 2: 专业公司 3: 承担单位")
    private String organizedByType;

    /** 项目层级（字典表代码：项目、课题、专题） */
    @Excel(name = "项目层级", readConverterExp = "字=典表代码：项目、课题、专题")
    private String projectLevel;

    /** 项目级别（字典表代码：国家级（A级）、集团级（B级）、专业公司（C级）、所属企业（D级）） */
    @Excel(name = "项目级别", readConverterExp = "字=典表代码：国家级（A级")
    private String projectCategory;

    /** 研究开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "研究开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date researchStartDate;

    /** 研究结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "研究结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date researchEndDate;

    /** 项目经理 */
    @Excel(name = "项目经理")
    private String projectManager;

    /** 项目经理id */
    @Excel(name = "项目经理id")
    private Long projectManagerId;

    /** 经费（万元） */
    @Excel(name = "经费", readConverterExp = "万=元")
    private Long funds;

    /** 同步时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "同步时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date syncTime;

    /** 计划任务书编号 */
    @Excel(name = "计划任务书编号")
    private String planCode;

    /** 文件 */
    @Excel(name = "文件")
    private String fileKeys;


    /**
    * 根据DO构建excel对象
    * @param dataList DO数据集合
    * @return excel对象数据集合
    */
    public static List<LabResearchProjectExcel> buildListByDO(List<LabResearchProject> dataList){
        if (CollectionUtils.isEmpty(dataList)){
            return new ArrayList<>();
        }
        return BeanUtil.copyToList(dataList, LabResearchProjectExcel.class);
    }

    /**
    * 根据Excel构建DO对象
    * @param dataList Excel数据集合
    * @return DO对象数据集合
    */
    public static List<LabResearchProject> coverToDOList(List<LabResearchProjectExcel> dataList){
        if (CollectionUtils.isEmpty(dataList)){
            return new ArrayList<>();
        }
        return BeanUtil.copyToList(dataList, LabResearchProject.class);
    }

}

